package com.grep.extra.factory.handle.impl;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.grep.base.util.FilePathUtil;
import com.grep.extra.dao.TaskDao;
import com.grep.extra.dao.WebSiteDao;
import com.grep.extra.dao.impl.TaskDAOSQL;
import com.grep.extra.dao.impl.WebSiteDAOSQL;
import com.grep.extra.factory.data.IDataQueue;
import com.grep.extra.factory.data.impl.SiteUrl;
import com.grep.extra.factory.data.impl.TaskUrl;
import com.grep.extra.factory.handle.IHandler;

public class SiteUrlHandler  implements IHandler<SiteUrl,TaskUrl>  {
static Logger logger = LoggerFactory.getLogger(SiteUrlHandler.class);    
	
	private IDataQueue<SiteUrl> task = null ;
	
	private IDataQueue<TaskUrl> data = null ;
	
	private WebSiteDao siteDao = new WebSiteDAOSQL() ;
	
	private TaskDao taskDao = new TaskDAOSQL() ;
	
	//初始化所有站点
	public void initTask(){
		List <SiteUrl>list = siteDao.getSiteUrls() ;
		if(list != null && list.size() > 0){
			task.putAll(list);
		}
	}
	
	public IDataQueue<SiteUrl> getTask(){
		return task;
	}

	public void init(IDataQueue<SiteUrl> task, IDataQueue<TaskUrl> data) {
		this.task = task ;
		this.data = data ;
		initTask() ;
	}

	public List<TaskUrl> process(SiteUrl url) {
		
		logger.debug("[SiteUrlHandler] handler start .") ;
		makSiteDir(url.getPath()) ;
		//获取任务站点的任务URL
		List<TaskUrl> list = taskDao.getTaskUrlsBySiteId(url.getId());
		if(list != null && list.size() > 0)
		{
			for(TaskUrl task : list){
				task.setSiteUrl(url);
				data.put(task);
			}
		}	
		logger.debug("[SiteUrlHandler] handler end .") ;
		return null;
	}
	
	/**
	 * 根据路径串创建路径。
	 * @param path 路径（为相对于classpath的路径值，非绝对路径）
	 */
	private void makSiteDir(String path){
		FilePathUtil.mkdir(path) ;
	}

}
